1. Field of the Invention
This invention relates to the field of networks and to methods and apparatus for loss recovery.
2. Background
Computer networks allow communication between one or more computers. Networks include local area networks (LANs), wide area networks (WANs), the Internet, wireless networks, mixed device networks, and others. An example of one such network is the Internet, which uses TCP (Transmission Control Protocol) as a communication protocol. One limitation to the efficient use of networks is network congestion, when the number of message sources and destinations and the amount of message traffic, is greater than the network can handle efficiently. In the prior art, such congestion problems are handled by implementing a congestion control algorithm. The congestion control algorithm operates by adjusting the size of a TCP window. A TCP window represents the amount of data that can be transmitted before the sender must wait for an acknowledgement (ACK) from the receiver. As congestion increases, typically the size of the window is reduced. As congestion decreases, the window size is increased to maximize bandwidth use.
In networks such as TCP, data is sent in discrete amounts called “packets”. Any particular amount of data that is sent over a network may consist of a plurality of packets. To reconstruct the data, all the packets are reassembled upon receipt. In some instances, the sequence of the packets is important to the reconstruction of the data. It is often the case that packets are lost during transmission. This may be due to corruption of the packet, or interference on the network, or due to lossy network environments, such as wireless networks.
In many prior art schemes, packet loss is used as a measure of congestion in a network. In other words, it is sometimes assumed that the more packets that are lost, the more congested a network may be. However, there are other reasons for packet loss besides congestion. It is well known that existing TCP algorithms that use packet loss as a signal of congestion do not perform well in environments where loss results from other reasons such a link layer error. When packet loss is presumed to be from congestion, each packet loss causes the window to be reduced and thus reduce the transmission rate. It is a disadvantage to unnecessarily reduce the transmission rate on a network due to packet loss when the packet loss is not the result of congestion. In many cases, packet loss problems are better handled by retransmission.